// 合并多个文件
import fs from "node:fs";
// 读取文件 first.js
fs.readFile("first.js", "utf8", (err, data1) => {
    if (err) throw err;
    // 读取文件 printText.js
    fs.readFile("printText.js", "utf8", (err, data2) => {
        if (err) throw err;
        // 写入文件 merge.txt
        fs.writeFile("merge.txt", data1 + data2, err => {
            if (err) throw err;
            console.log("文件已写入");
        })
    });
});

// 使用 Promise 封装异步 io 函数
function readFile(path, options) {
    return new Promise((resolve, reject) => {
        fs.readFile(path, options, (err, data) => {
            if (err) {
                reject(err);
            } else {
                resolve(data);
            }
        });
    });
}

function writeFile(path, data, options) {
    return new Promise((resolve, reject) => {
        fs.writeFile(path, data, options, err => {
            if (err) {
                reject(err);
            } else {
                resolve();
            }
        });
    });
}

function timeout(ms) {
    return new Promise(resolve => {
        setTimeout(resolve, ms);
    });
}

// 使用 await 关键字等待异步函数执行完成
const data1 = await readFile("first.js", "utf8");
const data2 = await readFile("printText.js", "utf8");
// await timeout(1000);
await writeFile("merge2.txt", data1 + data2);
console.log("文件已写入");